package com.been.common.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * properties文件读取类
 * 
 * @author been 2011-09-27
 */
public class PropertyUtil {
	
	/** 空字符串  */
	private static final String EMPTY_STRING="";
	
	/** 0字符串  */
	private static final String ZERO_STRING="0";
	
	/** 输入流。加载配置文件流  */
	private static InputStream inputStream = null;
	
	/**
	 * 传进相对应的properties文件地址 返回一个Properties
	 * 
	 * @param filePath
	 *            文件地址 相对路径 比如：config/cons/cons_unit.properties
	 * @return Properties
	 */
	public static Properties readPropertiesFile(String filePath) {
		try {
			//相对路径下的文件
			inputStream = PropertyUtil.class.getClassLoader()
					.getResourceAsStream(filePath);
			Properties properties = new Properties();
			properties.load(inputStream);
			return properties;
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		} finally {
			if (inputStream != null) {
				try {
					inputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	/**
	 * 根据传进来的参数  配置文件路径，需要取值的key
	 * @param filePath 配置文件路径
	 * @param key 需要取值key
	 * @return String 返回key 所对应的value
	 */
	public static String getPropertyStringByKey(String filePath,String key){
		Properties properties = readPropertiesFile(filePath);
		if(null == properties){
			return EMPTY_STRING;
		}
		String value = properties.getProperty(key);
		return value==null?EMPTY_STRING:value;
	}
	
	/**
	 * 根据传进来的参数  配置文件路径，需要取值的key
	 * @param filePath 配置文件路径
	 * @param key 需要取值key
	 * @return String 返回key 所对应的value
	 */
	public static int getPropertyIntegerByKey(String filePath,String key){
		String value = getPropertyStringByKey(filePath, key);
		return Integer.parseInt(EMPTY_STRING.equals(value)?ZERO_STRING:value);
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(getPropertyStringByKey("test.properties", "name"));
		System.out.println(getPropertyIntegerByKey("test.properties", "liu"));
		System.out.println(getPropertyIntegerByKey("test.properties", "age"));
	}

}
